home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 050 / madtrb1.arc / TSIPP.PAS < prev    next >
Pascal/Delphi Source File  |  1986-03-02  |  12KB  |  305 lines

  1. { TSIPP.PAS }
  2.  
  3. { *************************************************************************** }
  4. { *                                                                         * }
  5. { *                TURBO SCREEN INPUT PRE-PROCESSOR TOOLKIT                 * }
  6. { *                                                                         * }
  7. { *                               MAIN FILE                                 * }
  8. { *                                                                         * }
  9. { *                             Version  1.07                               * }
  10. { *                                                                         * }
  11. { *                       Written by Chris E. Maeder                        * }
  12. { *                             January, 1985                               * }
  13. { *                                                                         * }
  14. { *      A few notes on notation:                                           * }
  15. { *                                                                         * }
  16. { *          'G_I' means General Input                                      * }
  17. { *          'S_I' means Scrolling Input                                    * }
  18. { *                                                                         * }
  19. { *      This file should be the one that you start compilation with.       * }
  20. { *      This file makes all of the include calls for the other files.      * }
  21. { *      All global constants, types, and variables that require defining   * }
  22. { *      in this file are defined here.  All other global constants,        * }
  23. { *      types, and variables which you may find in the include files       * }
  24. { *      should remain in their respective include files.  There is no      * }
  25. { *      need to transfer them to this file.                                * }
  26. { *                                                                         * }
  27. { *      These include files are modular in design.  Thus you should        * }
  28. { *      exclude those from compilation that you do not need.  For example, * }
  29. { *      if your particular application of this pre-processor does not      * }
  30. { *      require scrolling input windows, then do not include the files     * }
  31. { *      'S_Input1.Inc' and 'S_Input2.Inc'.                                 * }
  32. { *                                                                         * }
  33. { *      Documentation on how the input pre-processor toolkit works can     * }
  34. { *      be found in the file 'Tsipp.Doc'.  Further documentation can       * }
  35. { *      also be found in this file and the toolkit's other files.          * }
  36. { *                                                                         * }
  37. { *************************************************************************** }
  38.  
  39.  
  40.  
  41. { Compiler Directives }
  42.  
  43.   {$C-} { This directive is required to guarantee that typed ahead characters will not be lost. }
  44.  
  45.  
  46.  
  47. Const
  48.  
  49.   { Menu Subprogram Page Constant }
  50.  
  51.     MAX_NUM_OF_MENU_PAGES=1;           { number of menu pages this particular implementation }
  52.                                        { of the input pre-processor is required to support. }
  53.  
  54.  
  55.  
  56.   { General Input Subprogram Page Constant }
  57.  
  58.     MAX_NUM_OF_G_I_PAGES=1;            { number of general input pages this particular }
  59.                                        { implementation of the input pre-processor is }
  60.                                        { required to support. }
  61.  
  62.  
  63.  
  64.   { Scrolling Input Subprogram Page Constant }
  65.  
  66.     MAX_NUM_OF_S_I_PAGES=4;            { number of scrolling input pages this particular }
  67.                                        { implementation of the input pre-processor is }
  68.                                        { required to support. }
  69.  
  70.  
  71.  
  72.   { miscellaneous constants }
  73.  
  74.     TEXT_SCREEN_SIZE=4096;             { size of the currently displayed video image in bytes }
  75.  
  76.     MAX_NUM_OF_TEXT_SCREENS=1;         { maximum number of screen images that can be }
  77.                                        { temporarily stored in the heap, as when displaying }
  78.                                        { help screens.  Can be increased so that more screen }
  79.                                        { images can be temporarily stored in the heap. }
  80.  
  81.     INPUT_FILE_NAME_EXTENSION:String[4]='.INP'; { three character extension to the input data file }
  82.                                                 { names.  Note that the Constant makes it easy for more }
  83.                                                 { than one application of the pre-processor to exist in }
  84.                                                 { the same directory. }
  85.  
  86.     TEMPLATE_FILE_NAME_EXTENSION='.TPL';        { three character extension to particular applications }
  87.                                                 { template file names.  Note that the Constant makes it easy }
  88.                                                 { for more than one application of the pre-processor }
  89.                                                 { to exist in the same directory. }
  90.  
  91.  
  92.  
  93. Type
  94.  
  95.   { Page Control Type }
  96.  
  97.     PageType=(Menu,G_I,S_I,Exit);      { enumerated data type used to tell the main subprogram which }
  98.                                        { of the below page type subprogram is currently in           }
  99.                                        { control:                                                    }
  100.                                        {      Menu Subprogram                                        }
  101.                                        {      General Input Subprogram                               }
  102.                                        {      Scrolling Input Subprogram                             }
  103.                                        {      Exit back to the operating system                      }
  104.  
  105.  
  106.  
  107.   { Menu Subprogram Page Type }
  108.  
  109.     MenuPageType=1..MAX_NUM_OF_MENU_PAGES; { a data type for the variable MenuPage }
  110.  
  111.  
  112.  
  113.   { General Input Subprogram Page Type }
  114.  
  115.     G_I_PageType=1..MAX_NUM_OF_G_I_PAGES;  { a data type for the variable G_I_Page }
  116.  
  117.  
  118.  
  119.   { Scrolling Input Subprogram Page Type }
  120.  
  121.     S_I_PageType=1..MAX_NUM_OF_S_I_PAGES;  { a data type for the variable S_I_Page }
  122.  
  123.  
  124.  
  125.   { Storage Data Structure for Screen Images }
  126.  
  127.     TextScreenPtr=^TextScreenImage;      { pointer to a screen image stored in the heap }
  128.     TextScreenImage=                     { a record type used to store a particular screen image }
  129.       Record
  130.         Image:Array[1..TEXT_SCREEN_SIZE] of Byte;
  131.       End; { TextScreenImage }
  132.  
  133.  
  134.  
  135.   { Screen Color Data Type }
  136.  
  137.     ColorType=0..31;                   { enumerated data type for allowable screen colors }
  138.  
  139.  
  140.  
  141.   { Miscellaneous Data Types }
  142.  
  143.     WorkString=String[79];             { a text string type used for passing text between }
  144.                                        { procedures }
  145.  
  146.  
  147.  
  148. Var
  149.  
  150.   { Page Control Variable }
  151.  
  152.     CurrentPage:PageType;              { a variable used to tell the main subprogram what }
  153.                                        { page subprogram is currently under control }
  154.  
  155.  
  156.  
  157.   { Menu Subprogram Page Variable }
  158.  
  159.     MenuPage:                          { an index to the current menu page being displayed }
  160.       MenuPageType;
  161.  
  162.  
  163.  
  164.   { General Input Subprogram Page Variable }
  165.  
  166.     G_I_Page:                          { an index to the current general input page being }
  167.       G_I_PageType;                    { displayed }
  168.  
  169.  
  170.  
  171.   { Scrolling Input Subprogram Page Variable }
  172.  
  173.     S_I_Page:                          { an index to the current scrolling input page }
  174.       S_I_PageType;                    { being displayed }
  175.  
  176.  
  177.  
  178.   { Temporary Storage Variable for Screen Images }
  179.  
  180.     TextScreen:Array[1..MAX_NUM_OF_TEXT_SCREENS] of TextScreenPtr;  { an array of pointers which point to various }
  181.                                                                     { screen images that are being stored temporarily }
  182.                                                                     { in the heap, as when displaying a help screen }
  183.  
  184.  
  185.  
  186.   { Screen Color Variables}
  187.  
  188.     HighlightColor:ColorType;          { Highlight prompt }
  189.     BackgroundColor:ColorType;         { Normal background color }
  190.     ForegroundColor:ColorType;         { Normal foreground color }
  191.     CharacterInputColor:ColorType;     { Color of characters being inputed }
  192.     BlockBackgroundColor:ColorType;    { Color of highlighted input block background }
  193.     BlockForegroundColor:ColorType;    { Color of highlighted input block foreground }
  194.     QuickInputHighlightColor:ColorType;{ Color of special 1 or 2 character input prompts }
  195.     InputWindowColor:ColorType;        { Color of load input box background }
  196.     ErrorWindowColor:ColorType;        { Color of error message box background }
  197.     InputWindowBorderColor:ColorType;  { Color of special input box border color }
  198.     MenuBackgroundColor:ColorType;     { Color of main menu screen background }
  199.  
  200.  
  201.  
  202. { Forward Procedure Declarations }
  203.  
  204.   Procedure DrawSimpleBeam;Forward;    { procedure specific to example application of pre-processor }
  205.  
  206.   Procedure DisplayBeamLength;Forward; { procedure specific to example application of pre-processor }
  207.  
  208.   Procedure DisplayBeamLoadModule(    CurrentInputCol,
  209.                                       CurrentInputRow:Integer);Forward;
  210.  
  211.   Procedure G_I_ErrorCheckingModule(Var OldPrompt,
  212.                                         NewPrompt:Integer;
  213.                                     Var DataEntry:Workstring);Forward;
  214.  
  215.   Procedure S_I_ErrorCheckingModule(Var OldCol                 :Integer;
  216.                                         OldRow                 :Integer;
  217.                                     Var NewCol                 :Integer;
  218.                                         NewRow,
  219.                                         CurrentTopMostDataRow  :Integer;
  220.                                     Var CurrentLeftMostDataCol,
  221.                                         CurrentRightMostDataCol:Integer;
  222.                                     Var DataEntry              :Workstring);Forward;
  223.  
  224.   Procedure LabelNewFile;Forward;
  225.  
  226.   Procedure RemoveNewFileLabel;Forward;
  227.  
  228.   Procedure ReadInputFileModule;Forward;
  229.  
  230.   Procedure WriteInputFileModule(Var ReturnToMainModule:Boolean);Forward;
  231.  
  232.   Procedure DirectoryModule;Forward;
  233.  
  234.  
  235.  
  236. { Compiler File Include Directives }
  237.  
  238.   {$I Screen.Inc}
  239.   {$I Menu.Inc}
  240.   {$I Execute.Inc}
  241.   {$I G_Input.Inc}
  242.   {$I S_Input1.Inc}
  243.   {$I S_Input2.Inc}
  244.   {$I Display.Inc}
  245.   {$I Init.Inc}
  246.   {$I Error.Inc}
  247.   {$I File.Inc}
  248.  
  249.  
  250.  
  251. Procedure ProgramPageControl;
  252.  
  253. { This procedure controls the display and the user interaction with the
  254.   pre-processor program's menu pages, general input pages, and scrolling input
  255.   pages.  This procedure is executed whenever a new page is displayed, even
  256.   if the same module will control the user interaction with the new page. }
  257.  
  258. Begin   { ProgramPageControl }
  259.   Case CurrentPage Of
  260.     Menu : Begin
  261.              MenuModule;
  262.            End; { Menu Module }
  263.     G_I  : Begin
  264.              G_I_EntryModule;
  265.            End; { General Input Page Module }
  266.     S_I  : Begin
  267.              S_I_EntryModule;
  268.            End; { Scrolling Input Page Module }
  269.   End; { Case CurrentPage }
  270. End;    { ProgramPageControl }
  271.  
  272.  
  273.  
  274. Procedure ShutProgramDown;
  275.  
  276. { This procedure causes the program to halt.  In doing so this procedure:
  277.  
  278.        1.  Releases all the dynamic memory previously allocated to the program
  279.            back to the operating system.
  280.        2.  Resets the blinking cursor.
  281.        3.  Resets the screen's foreground and background colors.
  282.        4.  Clears the screen.   }
  283.  
  284. Begin   { ShutProgramDown }
  285.   Window(1,1,80,25);
  286.   ShowBlinkingCursor;
  287.   TextColor(ForegroundColor);
  288.   TextBackground(Black);
  289.   ClrScr;
  290.   DisposeOfMenuDynamicMemory;
  291.   DisposeOf_G_I_DynamicMemory;
  292.   DisposeOf_S_I_DynamicMemory;
  293.   Halt;
  294. End;    { ShutProgramDown }
  295.  
  296.  
  297.  
  298. Begin   { Main Program }
  299.   InitModule;
  300.   Repeat
  301.     ProgramPageControl;
  302.   Until CurrentPage=Exit;
  303.   ShutProgramDown;
  304. End.    { Main Program }
  305.